//
//  HomeTableViewController.swift
//  SynWeibo
//
//  Created by 沈艳男 on 15/8/31.
//  Copyright © 2015年 沈艳男. All rights reserved.
//

import UIKit
import SVProgressHUD



class HomeTableViewController: BaseTableViewController {

    
    // 加载微博试图模型
    private lazy var statusListViewModel = StatusListViewModel()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
//         如果用户没有登录
        if !UserAccountViewModel.sharedUserAccount.userLogon {
            visirorView?.setUpInOf(nil, message: "分享大本营.....................................................")
            return 
        }
        
        // 注册可重用cell
        tableView.registerClass(StatusForwardCell.self, forCellReuseIdentifier: StatusForwardCellID)
        tableView.registerClass(StatusNormalCell.self, forCellReuseIdentifier: StatusNormalCellID)
        // 给cell指定高度
        tableView.estimatedRowHeight = 300
        tableView.rowHeight = 200
        loadData()
    }
    
    func loadData() {
        statusListViewModel.loadStatuses().subscribeNext({ (error) -> Void in
            printLog(error)
            SVProgressHUD.showInfoWithStatus("网路不给力")
            
            }) { () -> Void in
                self.tableView.reloadData()
        }
    }
    

}

extension HomeTableViewController {
    
    
    // 1、数据的行数
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return statusListViewModel.statuses.count
        //        return 20
    }
    
    // 2、cell
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        
        // 1.获取微博模型数据
        let statusViewModel = statusListViewModel.statuses [indexPath.row] as! StatusViewModel
        
        // 2.创建cell，从视图模型中取出可重用cell
        let cell = tableView.dequeueReusableCellWithIdentifier(statusViewModel.cellID, forIndexPath: indexPath) as! StatusCell
        
        // 3.设置数据
        cell.statusViewModel = statusViewModel
        
        // 4.返回cell
        return cell
    }
    
    override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
        // 查看该方法被调用的次数
        print(indexPath)
        
        // 获取模型数据
        let viewModel = statusListViewModel.statuses[indexPath.row] as! StatusViewModel
        // 判断视图模型的行高是否为0，如果为0，就表示已经缓存了行高
        if viewModel.rowHeigth > 0 {
            return viewModel.rowHeigth
        }
        
        // 获取cell
        let cell = tableView.dequeueReusableCellWithIdentifier(viewModel.cellID) as! StatusCell
        
        // 记录行高
        viewModel.rowHeigth = cell.rowHeight(viewModel)
        return viewModel.rowHeigth
    }
}



